// 创建一个空几何体

import {
    BufferAttribute,
    BufferGeometry,
    Mesh,
    DoubleSide,
    MeshLambertMaterial,
    PointsMaterial,
    Points,
    LineBasicMaterial,
    Line,
    LineLoop,
    LineSegments,
} from "three";
// 可以使用 BufferGeometry 定义任何形状的几何体
const geometry = new BufferGeometry();
// 通过 js 的类型化数组，定义一组坐标数据来定义几何体的顶点坐标
const vertices = new Float32Array([
    0,
    0,
    0, //顶点1坐标
    80,
    0,
    0, //顶点2坐标
    80,
    80,
    0, //顶点3坐标
    0,
    80,
    0, //顶点4坐标
]);
// 创建顶点索引index数据
const indexs = new Uint16Array([0, 1, 2, 0, 2, 3]);
// 通过threejs的属性缓冲区对象 BufferAttribute 表示几何体顶点数据
// 三个一组 表示一个顶点的xyz坐标
const attribue = new BufferAttribute(vertices, 3);
// 设置几何体顶点
geometry.attributes.position = attribue;
geometry.index = new BufferAttribute(indexs, 1);

// 使用面模式渲染
// const _material = new MeshLambertMaterial({
//     color: 0x87ceeb,
//     transparent: true, //开启透明
//     opacity: 0.5, //设置透明度
//     side: DoubleSide, //两面可见
// });
// 使用点渲染模式
// const material = new PointsMaterial({
//     color: 0xffff00,
//     size: 10.0, //点对象尺寸
// });
// const meshGeometry = new Points(geometry, material);
// 使用线模式渲染
const material = new LineBasicMaterial({
    color: 0xffff00,
});
/**
 * Line 普通线条
 * LineLoop 闭合线条
 * LineSegments 不连续线条
 */
export const meshGeometry = new Line(geometry, material);
